Add NET_TIME to csv for handling MS .net times.
authorrobertl <robertl>
Fri, 20 Nov 2009 15:54:21 +0000 (15:54 +0000)
committerrobertl <robertl>
Fri, 20 Nov 2009 15:54:21 +0000 (15:54 +0000)
csv_util.c
defs.h
util.c
xcsv_tokens.gperf
xcsv_tokens.in
xmldoc/chapters/styles.xml

index bd12e7581d18d957e45ddb91f1cf57bca94c3ddf..3d3ce6a7645f11fa8c6650315e5643cfe6b75375 100644 (file)
@@ -108,6 +108,7 @@ typedef enum {
        XT_LON_NMEA,
        XT_MAP_EN_BNG,
        XT_NOTES,
+       XT_NET_TIME,
        XT_PATH_COURSE,
        XT_PATH_DISTANCE_KM,
        XT_PATH_DISTANCE_MILES,
@@ -1096,6 +1097,9 @@ xcsv_parse_val(const char *s, waypoint *wpt, const field_map_t *fmp,
     case XT_ISO_TIME_MS: 
        wpt->creation_time = xml_parse_time(s, &wpt->microseconds);
        break;
+    case XT_NET_TIME: 
+       dotnet_time_to_time_t(atof(s), &wpt->creation_time, &wpt->microseconds);
+       break;
     case XT_GEOCACHE_LAST_FOUND:
         waypt_alloc_gc_data(wpt)->last_found = yyyymmdd_to_time(s);
        break;
diff --git a/defs.h b/defs.h
index 89a24559920dbb1548dfdf3fb39a05e49a166d1f..0c15fa127998ed93966b0b92463e858481c2b1a6 100644 (file)
--- a/defs.h
+++ b/defs.h
@@ -844,6 +844,7 @@ signed int get_tz_offset(void);
 time_t mklocaltime(struct tm *t);
 time_t mkgmtime(struct tm *t);
 time_t current_time(void);
+void dotnet_time_to_time_t(double dotnet, time_t *t, int *ms);
 signed int month_lookup(const char *m);
 const char *get_cache_icon(const waypoint *waypointp);
 const char *gs_get_cachetype(geocache_type t);
diff --git a/util.c b/util.c
index 0054c2324fcf0eb4d5b11f57fb56554c44042049..7c0c18e6b960e499961c7f519c0568fffffa0bd1 100644 (file)
--- a/util.c
+++ b/util.c
@@ -911,6 +911,25 @@ month_lookup(const char *m)
        return -1;
 }
 
+/*
+ * Microsoft dot net's time format is the number of 100 nanosecond intervals
+ * since midnight Jan 1, 0001.   We have time_t deeply ingrained into our 
+ * internals and since we're in the GPS biz, timestamps before 1/1/1970 aren't
+ * that interesting to us anyway.
+ */
+#define EPOCH_TICKS 621355968000000000.0
+void dotnet_time_to_time_t(double dotnet, time_t *t, int *ms)
+{
+  *t = (dotnet - EPOCH_TICKS) / 10000000.;
+#if LATER
+  // TODO: work out fractional seconds.
+  if (ms) {
+    *ms = dotnet % 10000;
+  }
+#endif
+}
+
+
 /*
  * Return a pointer to a constant string that is suitable for icon lookup
  * based on geocache attributes.   The strings used are those present in 
index b3991129df7317f8c79e8697700eef46789331d6..4cb3f4871c45d7f7fcb2fee9146cceb63cbec1a8 100644 (file)
@@ -1,4 +1,4 @@
-/* ANSI-C code produced by gperf version 3.0.1 */
+/* ANSI-C code produced by gperf version 3.0.3 */
 /* Command-line: gperf -L ANSI-C -D -t xcsv_tokens.in  */
 /* Computed positions: -k'2,4-5,12,$' */
 
 #line 1 "xcsv_tokens.in"
 struct xt_mapping {char *name; int xt_token; };
 
-#define TOTAL_KEYWORDS 74
+#define TOTAL_KEYWORDS 75
 #define MIN_WORD_LENGTH 3
 #define MAX_WORD_LENGTH 21
-#define MIN_HASH_VALUE 7
-#define MAX_HASH_VALUE 153
-/* maximum key range = 147, duplicates = 0 */
+#define MIN_HASH_VALUE 5
+#define MAX_HASH_VALUE 185
+/* maximum key range = 181, duplicates = 0 */
 
 #ifdef __GNUC__
 __inline
@@ -51,32 +51,32 @@ hash (register const char *str, register unsigned int len)
 {
   static unsigned char asso_values[] =
     {
-      154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-      154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-      154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-      154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-      154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-      154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-      154, 154, 154, 154, 154,   0, 154,   0,   0,  10,
-       55,  15,  50,  35, 154,  10,  40,  20,   0,  25,
-       25, 154,   0,  40,  15, 154,  20,   0,  25,  45,
-      154, 154, 154, 154, 154,   0, 154, 154, 154, 154,
-      154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-      154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-      154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-      154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-      154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-      154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-      154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-      154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-      154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-      154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-      154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-      154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-      154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-      154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-      154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
-      154, 154, 154, 154, 154, 154
+      186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
+      186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
+      186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
+      186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
+      186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
+      186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
+      186, 186, 186, 186, 186,   0, 186,   0,   0,   0,
+       70,   0,  30,  45, 186,  30,  50,  35,   5,  15,
+       25, 186,   0,  70,   0, 186,   0,   5,  30,  25,
+      186, 186, 186, 186, 186,  20, 186, 186, 186, 186,
+      186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
+      186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
+      186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
+      186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
+      186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
+      186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
+      186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
+      186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
+      186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
+      186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
+      186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
+      186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
+      186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
+      186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
+      186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
+      186, 186, 186, 186, 186, 186
     };
   register int hval = len;
 
@@ -107,175 +107,183 @@ hash (register const char *str, register unsigned int len)
 
 #ifdef __GNUC__
 __inline
+#ifdef __GNUC_STDC_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
 #endif
 struct xt_mapping *
 in_word_set (register const char *str, register unsigned int len)
 {
   static struct xt_mapping wordlist[] =
     {
+#line 70 "xcsv_tokens.in"
+      {"STATE", XT_STATE},
+#line 30 "xcsv_tokens.in"
+      {"HEART_RATE", XT_HEART_RATE},
+#line 71 "xcsv_tokens.in"
+      {"STREET_ADDR", XT_STREET_ADDR},
+#line 6 "xcsv_tokens.in"
+      {"CADENCE", XT_CADENCE},
+#line 22 "xcsv_tokens.in"
+      {"GEOCACHE_TERR", XT_GEOCACHE_TERR},
+#line 21 "xcsv_tokens.in"
+      {"GEOCACHE_PLACER", XT_GEOCACHE_PLACER},
+#line 10 "xcsv_tokens.in"
+      {"DESCRIPTION", XT_DESCRIPTION},
+#line 5 "xcsv_tokens.in"
+      {"ANYNAME", XT_ANYNAME},
+#line 17 "xcsv_tokens.in"
+      {"GEOCACHE_HINT", XT_GEOCACHE_HINT},
+#line 18 "xcsv_tokens.in"
+      {"GEOCACHE_ISARCHIVED", XT_GEOCACHE_ISARCHIVED},
+#line 19 "xcsv_tokens.in"
+      {"GEOCACHE_ISAVAILABLE", XT_GEOCACHE_ISAVAILABLE},
+#line 34 "xcsv_tokens.in"
+      {"IGNORE", XT_IGNORE},
+#line 15 "xcsv_tokens.in"
+      {"GEOCACHE_CONTAINER", XT_GEOCACHE_CONTAINER},
+#line 68 "xcsv_tokens.in"
+      {"ROUTE_NAME", XT_ROUTE_NAME},
+#line 67 "xcsv_tokens.in"
+      {"POSTAL_CODE", XT_POSTAL_CODE},
 #line 41 "xcsv_tokens.in"
       {"LAT_DIR", XT_LAT_DIR},
-#line 46 "xcsv_tokens.in"
-      {"LAT_NMEA", XT_LAT_NMEA},
-#line 33 "xcsv_tokens.in"
-      {"ICON_DESCR", XT_ICON_DESCR},
+#line 58 "xcsv_tokens.in"
+      {"NET_TIME", XT_NET_TIME},
+#line 56 "xcsv_tokens.in"
+      {"MAP_EN_BNG", XT_MAP_EN_BNG},
 #line 45 "xcsv_tokens.in"
       {"LAT_DDMMDIR", XT_LAT_DDMMDIR},
+#line 46 "xcsv_tokens.in"
+      {"LAT_NMEA", XT_LAT_NMEA},
 #line 38 "xcsv_tokens.in"
       {"LAT_DECIMALDIR", XT_LAT_DECIMALDIR},
-#line 5 "xcsv_tokens.in"
-      {"ANYNAME", XT_ANYNAME},
+#line 33 "xcsv_tokens.in"
+      {"ICON_DESCR", XT_ICON_DESCR},
+#line 23 "xcsv_tokens.in"
+      {"GEOCACHE_TYPE", XT_GEOCACHE_TYPE},
+#line 69 "xcsv_tokens.in"
+      {"SHORTNAME", XT_SHORTNAME},
 #line 73 "xcsv_tokens.in"
-      {"TRACK_NEW", XT_TRACK_NEW},
-#line 10 "xcsv_tokens.in"
-      {"DESCRIPTION", XT_DESCRIPTION},
-#line 22 "xcsv_tokens.in"
-      {"GEOCACHE_TERR", XT_GEOCACHE_TERR},
-#line 21 "xcsv_tokens.in"
-      {"GEOCACHE_PLACER", XT_GEOCACHE_PLACER},
-#line 6 "xcsv_tokens.in"
-      {"CADENCE", XT_CADENCE},
-#line 15 "xcsv_tokens.in"
-      {"GEOCACHE_CONTAINER", XT_GEOCACHE_CONTAINER},
-#line 18 "xcsv_tokens.in"
-      {"GEOCACHE_ISARCHIVED", XT_GEOCACHE_ISARCHIVED},
-#line 72 "xcsv_tokens.in"
       {"TRACK_NAME", XT_TRACK_NAME},
 #line 51 "xcsv_tokens.in"
       {"LON_DIR", XT_LON_DIR},
-#line 55 "xcsv_tokens.in"
-      {"LON_NMEA", XT_LON_NMEA},
-#line 56 "xcsv_tokens.in"
-      {"MAP_EN_BNG", XT_MAP_EN_BNG},
+#line 66 "xcsv_tokens.in"
+      {"PHONE_NR", XT_PHONE_NR},
+#line 74 "xcsv_tokens.in"
+      {"TRACK_NEW", XT_TRACK_NEW},
 #line 54 "xcsv_tokens.in"
       {"LON_DDMMDIR", XT_LON_DDMMDIR},
-#line 17 "xcsv_tokens.in"
-      {"GEOCACHE_HINT", XT_GEOCACHE_HINT},
+#line 55 "xcsv_tokens.in"
+      {"LON_NMEA", XT_LON_NMEA},
 #line 48 "xcsv_tokens.in"
       {"LON_DECIMALDIR", XT_LON_DECIMALDIR},
-#line 19 "xcsv_tokens.in"
-      {"GEOCACHE_ISAVAILABLE", XT_GEOCACHE_ISAVAILABLE},
-#line 75 "xcsv_tokens.in"
+#line 9 "xcsv_tokens.in"
+      {"COUNTRY", XT_COUNTRY},
+#line 76 "xcsv_tokens.in"
       {"URL", XT_URL},
-#line 30 "xcsv_tokens.in"
-      {"HEART_RATE", XT_HEART_RATE},
-#line 70 "xcsv_tokens.in"
-      {"STREET_ADDR", XT_STREET_ADDR},
-#line 39 "xcsv_tokens.in"
-      {"LAT_DECIMAL", XT_LAT_DECIMAL},
+#line 72 "xcsv_tokens.in"
+      {"TIMET_TIME", XT_TIMET_TIME},
+#line 14 "xcsv_tokens.in"
+      {"FORMAT", XT_FORMAT},
+#line 13 "xcsv_tokens.in"
+      {"FILENAME", XT_FILENAME},
+#line 65 "xcsv_tokens.in"
+      {"PATH_SPEED", XT_PATH_SPEED},
+#line 59 "xcsv_tokens.in"
+      {"PATH_COURSE", XT_PATH_COURSE},
 #line 24 "xcsv_tokens.in"
       {"GMT_TIME", XT_GMT_TIME},
 #line 31 "xcsv_tokens.in"
       {"HMSG_TIME", XT_HMSG_TIME},
-#line 69 "xcsv_tokens.in"
-      {"STATE", XT_STATE},
-#line 34 "xcsv_tokens.in"
-      {"IGNORE", XT_IGNORE},
-#line 23 "xcsv_tokens.in"
-      {"GEOCACHE_TYPE", XT_GEOCACHE_TYPE},
-#line 64 "xcsv_tokens.in"
-      {"PATH_SPEED", XT_PATH_SPEED},
-#line 66 "xcsv_tokens.in"
-      {"POSTAL_CODE", XT_POSTAL_CODE},
-#line 13 "xcsv_tokens.in"
-      {"FILENAME", XT_FILENAME},
+#line 42 "xcsv_tokens.in"
+      {"LAT_HUMAN_READABLE", XT_LAT_HUMAN_READABLE},
 #line 35 "xcsv_tokens.in"
       {"INDEX", XT_INDEX},
-#line 14 "xcsv_tokens.in"
-      {"FORMAT", XT_FORMAT},
-#line 65 "xcsv_tokens.in"
-      {"PHONE_NR", XT_PHONE_NR},
-#line 20 "xcsv_tokens.in"
-      {"GEOCACHE_LAST_FOUND", XT_GEOCACHE_LAST_FOUND},
-#line 67 "xcsv_tokens.in"
-      {"ROUTE_NAME", XT_ROUTE_NAME},
-#line 58 "xcsv_tokens.in"
-      {"PATH_COURSE", XT_PATH_COURSE},
-#line 37 "xcsv_tokens.in"
-      {"ISO_TIME", XT_ISO_TIME},
-#line 40 "xcsv_tokens.in"
-      {"LAT_DIRDECIMAL", XT_LAT_DIRDECIMAL},
-#line 49 "xcsv_tokens.in"
-      {"LON_DECIMAL", XT_LON_DECIMAL},
+#line 47 "xcsv_tokens.in"
+      {"LOCAL_TIME", XT_LOCAL_TIME},
 #line 43 "xcsv_tokens.in"
       {"LAT_INT32DEG", XT_LAT_INT32DEG},
 #line 29 "xcsv_tokens.in"
       {"GPS_VDOP", XT_GPS_VDOP},
-#line 32 "xcsv_tokens.in"
-      {"HMSL_TIME", XT_HMSL_TIME},
-#line 71 "xcsv_tokens.in"
-      {"TIMET_TIME", XT_TIMET_TIME},
-#line 27 "xcsv_tokens.in"
-      {"GPS_PDOP", XT_GPS_PDOP},
-#line 68 "xcsv_tokens.in"
-      {"SHORTNAME", XT_SHORTNAME},
-#line 47 "xcsv_tokens.in"
-      {"LOCAL_TIME", XT_LOCAL_TIME},
-#line 59 "xcsv_tokens.in"
-      {"PATH_DISTANCE_KM", XT_PATH_DISTANCE_KM},
-#line 28 "xcsv_tokens.in"
-      {"GPS_SAT", XT_GPS_SAT},
-#line 42 "xcsv_tokens.in"
-      {"LAT_HUMAN_READABLE", XT_LAT_HUMAN_READABLE},
-#line 9 "xcsv_tokens.in"
-      {"COUNTRY", XT_COUNTRY},
-#line 74 "xcsv_tokens.in"
-      {"URL_LINK_TEXT", XT_URL_LINK_TEXT},
+#line 39 "xcsv_tokens.in"
+      {"LAT_DECIMAL", XT_LAT_DECIMAL},
+#line 52 "xcsv_tokens.in"
+      {"LON_HUMAN_READABLE", XT_LON_HUMAN_READABLE},
+#line 20 "xcsv_tokens.in"
+      {"GEOCACHE_LAST_FOUND", XT_GEOCACHE_LAST_FOUND},
 #line 11 "xcsv_tokens.in"
       {"EXCEL_TIME", XT_EXCEL_TIME},
 #line 44 "xcsv_tokens.in"
       {"LATLON_HUMAN_READABLE", XT_LATLON_HUMAN_READABLE},
-#line 50 "xcsv_tokens.in"
-      {"LON_DIRDECIMAL", XT_LON_DIRDECIMAL},
 #line 53 "xcsv_tokens.in"
       {"LON_INT32DEG", XT_LON_INT32DEG},
 #line 8 "xcsv_tokens.in"
       {"CONSTANT", XT_CONSTANT},
-#line 36 "xcsv_tokens.in"
-      {"ISO_TIME_MS", XT_ISO_TIME_MS},
+#line 49 "xcsv_tokens.in"
+      {"LON_DECIMAL", XT_LON_DECIMAL},
+#line 37 "xcsv_tokens.in"
+      {"ISO_TIME", XT_ISO_TIME},
+#line 7 "xcsv_tokens.in"
+      {"CITY", XT_CITY},
+#line 60 "xcsv_tokens.in"
+      {"PATH_DISTANCE_KM", XT_PATH_DISTANCE_KM},
+#line 27 "xcsv_tokens.in"
+      {"GPS_PDOP", XT_GPS_PDOP},
 #line 26 "xcsv_tokens.in"
       {"GPS_HDOP", XT_GPS_HDOP},
-#line 60 "xcsv_tokens.in"
-      {"PATH_DISTANCE_MILES", XT_PATH_DISTANCE_MILES},
-#line 4 "xcsv_tokens.in"
-      {"ALT_METERS", XT_ALT_METERS},
-#line 25 "xcsv_tokens.in"
-      {"GPS_FIX", XT_GPS_FIX},
-#line 52 "xcsv_tokens.in"
-      {"LON_HUMAN_READABLE", XT_LON_HUMAN_READABLE},
+#line 75 "xcsv_tokens.in"
+      {"URL_LINK_TEXT", XT_URL_LINK_TEXT},
+#line 32 "xcsv_tokens.in"
+      {"HMSL_TIME", XT_HMSL_TIME},
+#line 40 "xcsv_tokens.in"
+      {"LAT_DIRDECIMAL", XT_LAT_DIRDECIMAL},
+#line 28 "xcsv_tokens.in"
+      {"GPS_SAT", XT_GPS_SAT},
+#line 63 "xcsv_tokens.in"
+      {"PATH_SPEED_KPH", XT_PATH_SPEED_KPH},
+#line 12 "xcsv_tokens.in"
+      {"FACILITY", XT_FACILITY},
+#line 64 "xcsv_tokens.in"
+      {"PATH_SPEED_MPH", XT_PATH_SPEED_MPH},
+#line 77 "xcsv_tokens.in"
+      {"YYYYMMDD_TIME", XT_YYYYMMDD_TIME},
+#line 50 "xcsv_tokens.in"
+      {"LON_DIRDECIMAL", XT_LON_DIRDECIMAL},
 #line 61 "xcsv_tokens.in"
-      {"PATH_SPEED_KNOTS", XT_PATH_SPEED_KNOTS},
+      {"PATH_DISTANCE_MILES", XT_PATH_DISTANCE_MILES},
 #line 3 "xcsv_tokens.in"
       {"ALT_FEET", XT_ALT_FEET},
+#line 25 "xcsv_tokens.in"
+      {"GPS_FIX", XT_GPS_FIX},
+#line 16 "xcsv_tokens.in"
+      {"GEOCACHE_DIFF", XT_GEOCACHE_DIFF},
 #line 57 "xcsv_tokens.in"
       {"NOTES", XT_NOTES},
 #line 62 "xcsv_tokens.in"
-      {"PATH_SPEED_KPH", XT_PATH_SPEED_KPH},
-#line 12 "xcsv_tokens.in"
-      {"FACILITY", XT_FACILITY},
-#line 7 "xcsv_tokens.in"
-      {"CITY", XT_CITY},
-#line 16 "xcsv_tokens.in"
-      {"GEOCACHE_DIFF", XT_GEOCACHE_DIFF},
-#line 63 "xcsv_tokens.in"
-      {"PATH_SPEED_MPH", XT_PATH_SPEED_MPH},
-#line 76 "xcsv_tokens.in"
-      {"YYYYMMDD_TIME", XT_YYYYMMDD_TIME}
+      {"PATH_SPEED_KNOTS", XT_PATH_SPEED_KNOTS},
+#line 36 "xcsv_tokens.in"
+      {"ISO_TIME_MS", XT_ISO_TIME_MS},
+#line 4 "xcsv_tokens.in"
+      {"ALT_METERS", XT_ALT_METERS}
     };
 
   static signed char lookup[] =
     {
-      -1, -1, -1, -1, -1, -1, -1,  0,  1, -1,  2,  3, -1, -1,
-       4, -1, -1,  5, -1,  6, -1,  7, -1,  8, -1,  9, -1, 10,
-      11, 12, 13, -1, 14, 15, -1, 16, 17, -1, 18, 19, 20, -1,
-      -1, 21, -1, 22, 23, -1, -1, -1, -1, 24, -1, 25, 26, 27,
-      28, -1, 29, -1, 30, 31, -1, 32, -1, 33, 34, -1, 35, 36,
-      37, 38, -1, 39, 40, -1, 41, 42, 43, 44, 45, -1, -1, 46,
-      47, 48, 49, 50, 51, -1, -1, -1, 52, 53, -1, 54, 55, -1,
-      -1, 56, -1, -1, 57, 58, -1, -1, 59, -1, 60, 61, 62, -1,
-      63, 64, -1, -1, 65, -1, 66, -1, 67, -1, -1, -1, 68, -1,
-      -1, -1, 69, 70, -1, -1, -1, 71, 72, -1, -1, -1, -1, -1,
-      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 73
+      -1, -1, -1, -1, -1,  0, -1, -1, -1, -1,  1,  2,  3,  4,
+      -1,  5,  6,  7,  8,  9, 10, 11, -1, 12, -1, 13, 14, 15,
+      16, -1, 17, 18, -1, 19, 20, 21, -1, -1, 22, 23, 24, -1,
+      25, 26, 27, -1, 28, -1, 29, 30, -1, -1, 31, 32, -1, 33,
+      34, -1, 35, -1, 36, 37, -1, 38, 39, -1, -1, -1, 40, -1,
+      41, -1, -1, -1, -1, 42, -1, 43, 44, -1, -1, 45, -1, 46,
+      -1, -1, -1, -1, -1, 47, 48, 49, 50, 51, -1, -1, 52, -1,
+      53, 54, -1, 55, -1, 56, -1, -1, -1, -1, 57, -1, -1, -1,
+      -1, 58, 59, -1, -1, -1, -1, 60, -1, -1, 61, -1, 62, -1,
+      -1, -1, 63, 64, -1, -1, -1, 65, 66, -1, -1, -1, -1, 67,
+      -1, -1, -1, -1, -1, -1, -1, -1, 68, -1, -1, -1, 69, 70,
+      -1, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, 72, -1,
+      -1, -1, -1, 73, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+      -1, -1, -1, 74
     };
 
   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
index c0c106e7a1afb2489db682a27ac607677d6cacad..3d7f1013ce5e8babe50ee5f1ceda1e7c6e2b5dd8 100644 (file)
@@ -55,6 +55,7 @@ LON_DDMMDIR, XT_LON_DDMMDIR
 LON_NMEA, XT_LON_NMEA
 MAP_EN_BNG, XT_MAP_EN_BNG
 NOTES, XT_NOTES
+NET_TIME, XT_NET_TIME
 PATH_COURSE, XT_PATH_COURSE
 PATH_DISTANCE_KM, XT_PATH_DISTANCE_KM
 PATH_DISTANCE_MILES, XT_PATH_DISTANCE_MILES
index 187bd5afbc430d800cb64cfbd6d56a5577b7448f..26f9c4937124f67bf89690415b54c8951177c071 100644 (file)
@@ -948,6 +948,20 @@ example:
 </screen>
 </section>
 
+<section id="style_def_nettime">
+<title>NET_TIME</title>
+<para>
+  Microsoft dot net represents times in 100 nanoscond intervals since midnight
+  Jan 1/0001 GMT, giving absurdly large numbers like 633943150010000000 for 
+  mid-November, 2009.  NET_TIME is how to represent those in GPSBabel.
+</para>
+<para>
+example:
+</para>
+<screen format="linespecific">   IFIELD NET_TIME,"","%f"
+</screen>
+</section>
+
 <section id="style_def_geodiff">
 <title>GEOCACHE_DIFF</title>
 <para>